package helloworld;


import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import org.junit.Test;
import utils.RabbitMQUtils;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * Send
 * 生产消息
 * @author 丛有志
 * @date 2020/11/8 17:12
 * <p>
 * 版本        修改时间        作者        修改内容
 * V1.0        2020/11/8     丛有志        初始版本
 */
public class NewProvider {

    @Test
    public void testSendMessage() throws IOException, TimeoutException {

        // 获取连接对象
        Connection connection = RabbitMQUtils.getConnection();
        // 获取连接中通道
        Channel channel = connection.createChannel();
        // 通道绑定对应消息队列
        // 参数1：队列名称 如果队列不存在自动创建
        // 参数2：用来定义队列特性是否要持久化true持久化队列 false不持久【例】自动创建的队列，无论mq重启之后一直存在，若为false则在重启之后删除
        // 参数3：exclusive 是否独占队列【说明】若为true则队列只为当前连接可用，若为false则可以被其他连接可用
        // 参数4：autoDelete：是否在消费完成后自动删除队列 true自动删除 false不自动删除
        // 参数5: 额外参数附加参数
        channel.queueDeclare("hello",false,false,false,null);

        // 发布消息
        // 参数1：交换机名称若无则为空
        // 参数2：队列名称=>往hello队列发布消息
        // 参数3：发布消息时属性传递消息的额外设置
        // 参数4：发布消息时具体内容
        channel.basicPublish("","hello",null,"hello rabbitmq".getBytes());
        // 关闭连接
        RabbitMQUtils.closeConnectionAndChanel(channel,connection);

    }
}
